<?php
/**
 * 开店星新零售管理系统
 * @description 基于Yii2+Vue2.0+uniapp研发，H5+小程序+公众号全渠道覆盖，功能完善开箱即用，框架成熟易扩展二开
 * @author 青岛开店星信息技术有限公司
 * @link https://www.kaidianxing.com
 * @copyright Copyright (c) 2020-2022 Qingdao ShopStar Information Technology Co., Ltd.
 * @copyright 版权归青岛开店星信息技术有限公司所有
 * @warning Unauthorized deletion of copyright information is prohibited.
 * @warning 未经许可禁止私自删除版权信息
 */

namespace shopstar\components\authorization;

use shopstar\constants\ClientTypeConstant;
use shopstar\exceptions\member\MemberException;
use shopstar\helpers\RequestHelper;
use shopstar\models\member\MemberLoginModel;
use shopstar\models\member\MemberModel;

/**
 * WAP渠道处理器
 * Class DouyinHandler
 * @package shopstar\components\authorization
 * @author 青岛开店星信息技术有限公司
 */
class WapHandler extends AuthorizationHandlerInterface
{

    public function auth(array $options = [])
    {
        parent::auth($options); // TODO: Change the autogenerated stub
    }

    /**
     * @param string $sessionId
     * @return false|string
     * @throws MemberException
     * @author 青岛开店星信息技术有限公司
     */
    public function login(string $sessionId)
    {
        $mobile = RequestHelper::post('mobile');
        $password = RequestHelper::post('password');
        //查询用户信息
        $member = MemberModel::find()
            ->where(['mobile' => $mobile, 'is_deleted' => 0])
            ->asArray()
            ->one();

        if (empty($member)) {
            throw new MemberException(MemberException::WAP_LOGIN_MEMBER_NOT_EXISTS);
        }

        //如果是黑名单
        if ($member['is_black'] == 1) {
            throw new MemberException(MemberException::MEMBER_WAP_LOGIN_IS_BLACK_ERROR);
        }

        //验证用户密码
        $checkRes = md5($password . $member['salt']) == $member['password'];
        if (!$checkRes) {
            throw new MemberException(MemberException::PASSWORD_ERROR);
        }

        return MemberLoginModel::login($member['id'], $sessionId, $member, ClientTypeConstant::CLIENT_H5);
    }

}
